home *** CD-ROM | disk | FTP | other *** search
- $INCLUDE "REGNAMES.INC"
- CLS
-
- PRINT "Show! - Version 0.9 - Copyright (C) 1993 by Thomas Dreibholz"
-
- IF CheckVector(&H49)=0 THEN
- PRINT "FEHLER: File Transfer ist nicht aktiv."
- PRINT " FILE.EXE wurde nicht durch die CONFIG.SYS eingebunden!"
- GOTO ende
- END IF
-
- IF CheckVector(&H33)=0 THEN
- PRINT "FEHLER: Maustreiber nicht vorhanden!"
- GOTO ende
- END IF
-
- REG %AX,0
- CALL INTERRUPT &H33
- IF REG(%AX)=0 THEN
- PRINT "FEHLER: Fehler bei Reset des Maustreibers!"
- GOTO ende
- END IF
- tasten=REG(%BX)
-
- REG %AX,(&H6*256)
- CALL INTERRUPT &H49
- jseg=REG(%ES)
- janus=REG(%DI)
-
- REG %AX,(&H4F*256)
- REG %ES,jseg
- REG %DI,janus
- CALL INTERRUPT &H10
- IF REG(%AX)<>&H4F THEN
- PRINT "FEHLER: Es ist keine SuperVGA-Karte installiert, oder der"
- PRINT " VESA-Treiber wurde nicht in die CONFIG.SYS eingebunden."
- GOTO ende
- END IF
-
- REG %AX,(&H4F*256)+&H01
- REG %CX,&H101
- REG %ES,jseg
- REG %DI,janus
- CALL INTERRUPT &H10
- IF REG(%AX)<>&H4F THEN
- PRINT "FEHLER: SuperVGA-Karte untersttzt den Modus $101 (640*480 bei 256 Farben)"
- PRINT " nicht. Diese Auflsung wird aber mindestens bentigt."
- END IF
-
- DEF SEG = jseg
- m101.Segment=PEEKI(janus+8)
- m101.Add=PEEKI(janus+4)
- m101.File=OpenAmiga("M:Display640")
- IF m101.File=-1 THEN
- PRINT "FEHLER: Die Datei SYS:PC/ATUtilities/Display640.cdat lát sich"
- PRINT " nicht ffnen."
- GOTO ende
- END iF
- m101.FileOkay=100
-
- REG %AX,(&H4F*256)+&H01
- REG %CX,&H103
- REG %ES,jseg
- REG %DI,janus
- CALL INTERRUPT &H10
- IF REG(%AX)=&H4F THEN
- DEF SEG = jseg
- m103.Okay=100
- m103.Segment=PEEKI(janus+8)
- m103.Add=PEEKI(janus+4)
- m103.File=OpenAmiga("M:Display800")
- IF m103.File=-1 THEN
- PRINT "FEHLER: Die Datei SYS:PC/ATUtilities/Display800.cdat lát sich"
- PRINT " nicht ffnen."
- GOTO ende
- END iF
- m103.FileOkay=100
- END IF
-
- DIM bilder$(10)
- bilder$(0)="CC:Prgs/F11.cdat"
- bilder$(1)="CC:Prgs/T1.cdat"
- bilder$(2)="CC:Prgs/F12.cdat"
- bilder$(3)="CC:Prgs/J1.cdat"
- bilder$(4)="CC:Prgs/F13.cdat"
- bilder$(5)="CC:Prgs/Newton.cdat"
- bilder$(6)="CC:Prgs/F14.cdat"
- bilder$(7)="CC:Prgs/F640*480.cdat"
- bilder$(8)="CC:Prgs/F800*600.cdat"
- bilder=8
- richtung=1
- wiederholung=0
-
- bool=1 : bildFH=-1 : bnum=0
- WHILE bool=1
- IF bnum<>-1 THEN
- bild$=bilder$(bnum)
- IF bildFH<>-1 THEN CALL CloseAmiga(bildFH)
- CALL LadeBild
- CALL LadePalette
- FOR schleife=0 TO 15000
- IF INKEY$<>"" OR bildFH=-1 OR Button<>0 THEN
- WHILE Button<>0 : WEND
- q:
- f=Schalter
- IF f=0 THEN richtung=-1 : GOTO neu
- IF f=1 THEN richtung=1 : GOTO neu
- IF f=2 THEN bnum=0 : GOTO weiter
- IF f=3 THEN bnum=bilder : GOTO weiter
- IF f=4 THEN
- WHILE INKEY$="":WEND
- GOTO q
- END IF
- IF f=7 THEN GOTO ende
- IF bildFH=-1 THEN GOTO weiter
- END IF
- NEXT
- ELSE
- GOTO q
- END IF
- neu:
- bnum=bnum+richtung
- IF wiederholung=1 THEN
- IF bnum>bilder THEN bnum=0
- IF bnum<0 THEN bnum=bilder
- ELSE
- IF bnum>bilder OR bnum<0 THEN bnum=-1
- END IF
- weiter:
- WEND
-
- ende:
- SCREEN 0
- CLS
- IF bildFH<>-1 THEN CALL CloseAmiga(bildFH)
- IF m103.FileOkay THEN CALL CloseAmiga(m103.File)
- IF m101.FileOkay THEN CALL CloseAmiga(m101.File)
- SOUND 1500,2
- PRINT "bye!"
- END
-
-
- FUNCTION CheckVector(num) STATIC
- REG %AX,(&H35*256)+num
- CALL INTERRUPT &H21
- segm&=REG(%ES)
- offs&=REG(%BX)
- DEF SEG = segm&
- IF (segm&=0) OR (PEEK(offs&)=207) THEN
- CheckVector=0
- ELSE
- CheckVector=1
- END IF
- END FUNCTION
-
- FUNCTION OpenAmiga(n$) SHARED
- n$=n$+CHR$(0)
- DEF SEG = jseg
- FOR i=1 TO LEN(n$)
- POKE janus+i-1,ASC(MID$(n$,i,1))
- NEXT
- REG %AX,&H0*256
- REG %BX,1
- CALL INTERRUPT &H49
- IF REG(%AX)=10000 THEN
- OpenAmiga=REG(%BX)
- ELSE
- OpenAmiga=-1
- END IF
- END FUNCTION
-
- SUB CloseAmiga(handle) STATIC
- REG %AX,&H1*256
- REG %BX,handle
- CALL INTERRUPT &H49
- END SUB
-
- SUB SeekAmiga(handle,p) STATIC
- REG %AX,&H7*256
- REG %BX,handle
- REG %CX,p
- CALL INTERRUPT &H49
- END SUB
-
- FUNCTION ReadAmiga(handle,length) STATIC
- REG %AX,&H2*256
- REG %BX,handle
- REG %CX,length
- CALL INTERRUPT &H49
- ReadAmiga=REG(%BX)
- END FUNCTION
-
- SUB CopyToPC(s,o&,length) STATIC
- REG %AX,&H5*256
- REG %BX,s
- REG %DX,o&
- REG %CX,length
- CALL INTERRUPT &H49
- END SUB
-
- SUB SelectRAM(num) STATIC
- REG %AX,(&H4F*256)+&H05
- REG %BX,0
- REG %DX,num
- CALL INTERRUPT &H10
- END SUB
-
- SUB SelectMode(num) SHARED
- REG %AX,(&H4F*256)+&H02
- REG %BX,num
- CALL INTERRUPT &H10
- IF mode=&H103 THEN
- segment=m103.Segment
- add=m103.Add
- ELSE
- segment=m101.Segment
- add=m101.Add
- END IF
- modus=num
- END SUB
-
- SUB LadePalette SHARED
- d=ReadAmiga(bildFH,4)
- DEF SEG = jseg
- farben=PEEK(janus+3)
- IF CHR$(PEEK(janus+0))="P" THEN
- d=ReadAmiga(bildFH,3*255)
- IF d>0 THEN
- anzcols=d/3
- REG %AX,(&H10*256)+&H12
- REG %BX,0
- REG %CX,INT(d/3)
- REG %ES,jseg
- REG %DX,janus
- CALL INTERRUPT &H10
- END IF
- ELSE
- p=janus
- IF farben<253 THEN farben=farben+3
- s=INT(farben/3)
- s2=s+s
- FOR i=1 TO s
- s3=15+(i*(240/s))
- POKE p+0,i
- POKE p+1,i
- POKE p+2,s3
- POKE p+s,s3
- POKE p+s+1,s3
- POKE p+s+2,i
- POKE p+s2,s3
- POKE p+s2+1,i
- POKE p+s2+2,i
- p=p+3
- NEXT
- REG %AX,(&H10*256)+&H12
- REG %BX,0
- REG %CX,255
- REG %ES,jseg
- REG %DX,janus
- CALL INTERRUPT &H10
- END IF
- END SUB
-
- SUB LadeBild SHARED
- bild=0
- bildFH=OpenAmiga(bild$)
- IF bildFH<>-1 THEN
- d=ReadAmiga(bildFH,8)
- IF d=8 THEN
- DEF SEG = jseg
- IF CHR$(PEEK(janus+0))="C" AND CHR$(PEEK(janus+1))="D" AND CHR$(PEEK(janus+2))="A" AND CHR$(PEEK(janus+3))="T" THEN
- w=PEEK(janus+4)*256+PEEK(janus+5)
- h=PEEK(janus+6)*256+PEEK(janus+7)
- IF w=800 THEN
- modus=&H103
- IF m103.Okay<>100 THEN
- modus=0
- END IF
- ELSE
- modus=&H101
- END IF
- IF modus<>0 THEN
- size&=w*h
- CALL SelectMode(modus)
- IF REG(%AX)=&H4F THEN
- bild=1
- CALL Lade(bildFH,w*h)
- END IF
- ELSE
- SOUND 1500,5
- END IF
- ELSE
- SOUND 1500,5
- END IF
- ELSE
- SOUND 1500,5
- END IF
- ELSE
- SOUND 1500,5
- END IF
- END SUB
-
- SUB Lade(fh,size&) SHARED
- p&=0 : d&=0 : bytes=1 : s=0
- WHILE d&<size&
- IF d&+16384>size& THEN l=size&-d& ELSE l=16384
- bytes=ReadAmiga(fh,l)
- CALL CopyToPC(segment,p&,bytes)
- p&=p&+bytes
- d&=d&+bytes
- IF p&>65535 THEN
- s=s+1
- p&=0
- CALL SelectRAM(s)
- END IF
- WEND
- END SUB
-
- SUB SetPal(farbe,r,g,b) STATIC
- REG %AX,(&H10*256)+&H10
- REG %BX,farbe
- REG %CX,(g*256)+b
- REG %DX,(r*256)
- CALL INTERRUPT &H10
- END SUB
-
- SUB DrawX(x,y,sw,w,farbe) STATIC
- xs=(y*sw)+x
- FOR i=xs TO xs+w
- POKE i,farbe
- NEXT
- END SUB
-
- SUB DrawY(x,y,sw,h,farbe) STATIC
- FOR i=y TO y+h
- POKE (i*sw)+x,farbe
- NEXT
- END SUB
-
- SUB DrawBox(x,y,w,h,farbe) SHARED
- DEF SEG = segment
- IF modus=&H103 THEN sw=800 ELSE sw=640
- CALL DrawX(x,y,sw,w,farbe)
- CALL DrawX(x,y+h,sw,w,farbe)
- CALL DrawY(x,y,sw,h,farbe)
- CALL DrawY(x+w,y,sw,h,farbe)
- END SUB
-
- SUB Draw3dBox(x,y,w,h,farbe1,farbe2) SHARED
- DEF SEG = segment
- IF modus=&H103 THEN sw=800 ELSE sw=640
- CALL DrawX(x,y,sw,w,farbe1)
- CALL DrawX(x,y+h,sw,w,farbe2)
- CALL DrawY(x,y,sw,h,farbe1)
- CALL DrawY(x+w,y,sw,h,farbe2)
- END SUB
-
- FUNCTION Button STATIC
- REG %AX,3
- CALL INTERRUPT &H33
- Button=REG(%BX)
- END FUNCTION
-
- FUNCTION Schalter SHARED
- DIM cx(4),dx(4)
- IF bildFH=-1 THEN
- CALL SelectMode(&H101)
- END IF
- CALL SelectRAM(0)
- j=0
- FOR i=12 TO 15
- REG %AX,(&H10*256)+&H15
- REG %BX,i
- CALL INTERRUPT &H10
- cx(j)=REG(%CX)
- dx(j)=REG(%DX)
- j=j+1
- NEXT
- CALL SetPal(12,255,255,80)
- CALL SetPal(13,160,160,180)
- CALL SetPal(14,0,0,0)
- CALL SetPal(15,255,255,255)
- IF modus=&H103 THEN
- rx=800 : ry=600
- CALL SeekAmiga(m103.File,8)
- CALL Lade(m103.File,48800)
- ELSE
- rx=640 : ry=480
- CALL SeekAmiga(m101.File,8)
- CALL Lade(m101.File,39040)
- END IF
-
- tex$="Show: DH0:Test-Verzeichnis/Test.slide Bild: "+bild$
- tex$=tex$+"Auflsung:"+STR$(rx)+" *"+STR$(ry)
- DEF SEG = jseg
- FOR i=1 TO LEN(tex$)
- POKE janus+i-1,ASC(MID$(tex$,i,1))
- NEXT
- REG %AX,(&H13*256)+0
- REG %BX,12
- REG %CX,LEN(tex$)
- REG %DX,(3*256)+1
- REG %ES,jseg
- REG %BP,janus
- CALL INTERRUPT &H10
-
- REG %AX,&H0B
- CALL INTERRUPT &H33
- ende1=1
- IF wiederholung=1 THEN
- CALL Draw3dBox(5+(6*78),10,75,25,14,15)
- END IF
- gad=0 : ogad=0 : old=0 : down=0 : wahl=-1
- CALL DrawBox(4,9,77,27,12)
- i$=""
- WHILE ende1=1
- REG %AX,&H0B
- CALL INTERRUPT &H33
- i$=INKEY$
- last=(REG(%CX)/4)+old
- IF last<-6 OR i$="4" THEN
- IF gad>0 THEN gad=gad-1
- old=0
- ELSEIF last>6 OR i$="6" THEN
- IF gad<7 THEN gad=gad+1
- old=0
- ELSE
- old=last
- END IF
- IF gad<>ogad THEN
- IF down=1 THEN
- CALL Draw3dBox(5+(ogad*78),10,75,25,15,14)
- down=0
- END IF
- CALL DrawBox(4+(ogad*78),9,77,27,13)
- CALL DrawBox(4+(gad*78),9,77,27,12)
- ogad=gad
- END IF
- o=Button
- IF o>1 OR i$=CHR$(27) THEN
- ende1=0
- ELSE
- IF o=1 OR i$=CHR$(13) THEN
- IF gad=6 THEN
- IF wiederholung=0 THEN
- CALL Draw3dBox(5+(6*78),10,75,25,14,15)
- wiederholung=1
- ELSE
- CALL Draw3dBox(5+(6*78),10,75,25,15,14)
- wiederholung=0
- END IF
- WHILE Button<>0 : WEND
- ELSE
- CALL Draw3dBox(5+(gad*78),10,75,25,14,15)
- down=1
- END IF
- ELSE
- IF down=1 THEN
- CALL Draw3dBox(5+(gad*78),10,75,25,15,14)
- wahl=gad
- down=0
- ende1=0
- END IF
- END IF
- END IF
- WEND
- IF bild=1 THEN
- IF modus=&H103 THEN
- CALL SeekAmiga(bildFH,8)
- CALL Lade(bildFH,48800)
- ELSE
- CALL SeekAmiga(bildFH,8)
- CALL Lade(bildFH,39040)
- END IF
- END IF
- j=0
- FOR i=12 TO 15
- REG %AX,(&H10*256)+&H10
- REG %BX,i
- REG %CX,cx(j)
- REG %DX,dx(j)
- CALL INTERRUPT &H10
- j=j+1
- NEXT
- Schalter=wahl
- END FUNCTION